Field of the Invention
The present invention generally relates to memory access operations and, more specifically, to a technique for performing memory access operations via texture hardware.
Description of the Related Art
A conventional graphics processing unit (GPU) includes texture processing hardware configured to perform a variety of texture-related operations, including texture load operations and texture cache operations. A graphics program developer may generate shader programs that make use of this texture processing hardware in order to render a three-dimensional graphics scene.
In recent years, program developers have begun to generate shader programs that perform arbitrary, non-graphics-oriented operations that leverage the parallel processing architecture of the GPU. However, given the architecture of the texture processing hardware, those memory access operations must be carefully designed to resemble texture processing operations. For example, a typical texture access operation reads two-dimensional (2D) texture data from memory based on 2D coordinates and dimensions associated with the texture. In order to generate a shader program that is capable of loading non-texture data, a program developer must explicitly declare all data elements as having 2D coordinates and dimensions that reflect a 2D data structure similar to a texture, regardless of the actual dimensions associated with that data.
The above approach is problematic because creating a shader program that performs arbitrary computations requires extensive knowledge of texture processing operations, and many program developers who wish the leverage the parallel processing architecture of GPUs lack such knowledge. These requirements create a considerable barrier to entry for many program developers.
One solution to this problem is to create a separate data pathway for generic memory access operations in addition to the existing texture processing hardware. With this approach, program developers who wish to perform processing operations with arbitrary non-texture data can simply write programs that rely on this separate pathway. However, this approach is problematic because conventional GPUs simply lack the space required to integrate additional data pathways, and increasing the GPU size is costly.
Accordingly, what is needed in the art is a more effective technique for performing generic data access operations via texture processing hardware.